// 导入http模块
import http from 'wechat-http'
// 配置接口基地址
http.baseURL = 'https://live-api.itheima.net'
// 挂载到全局方法
// 请求拦截器
http.intercept.request = config => {
  // 获取token
  const token = getApp().token
  if (token) {
    config.header = config.header || {}
    config.header.Authorization = config.header.Authorization || `Bearer ${token}`
  }
  return config
}
/**
 * 配置响应拦截器
 */
http.intercept.response = async res => {
  // 过滤接口返回的数据
  if (res.statusCode === 401) {
    if (res.config.url.includes('/refreshToken')) {
      // 读取当前历史栈
      const pageStack = getCurrentPages()
      // 取出当前页面路径，
      const currentPage = pageStack[pageStack.length - 1]
      // 取出当前页面路径，
      const url = currentPage.route
      // 引导用户到登录页面
      return wx.redirectTo({
        url: `/pages/login/index?redirectURL=/${url}`
      })
    }
    const app = getApp()
    // 刷新token
    const refreshToken = app.refreshToken
    // 登录刷新token
    const { data } = await http({
      url: '/refreshToken',
      method: 'post',
      header: {
        Authorization: `Bearer ${refreshToken}`
      }
    })
    // 得到新的 token 存储起来
    app.setToken(data.token, data.refreshToken)
    // 将原来出错的请求, 再来一次, 记得加上 return 阻止之前的错误数据
    return http({
      ...res.config,
      header: {
        Authorization: `Bearer ${data.token}`
      }
    })
  }
  return res.data
}
wx.http = http
// 模块导出
export default http
